package _01_动态数组;

public class _55_跳跃游戏 {

    public static void main(String[] args) {


        _55_跳跃游戏 v = new _55_跳跃游戏();

        int[] ins = new int[]{3, 2, 1, 0, 4};

        System.out.println(v.canJump(ins));

    }

    public boolean canJump(int[] nums) {
        // 当前跳跃到的最大距离
        int max = 0;
        for (int i = 0; i < nums.length; i++) {
            int curStep = i + nums[i];
            if (i >= max) {
                // 更新最大距离
                max = curStep;
                if (max == i) {
                    // 说明继续走不下去了
                    break;
                }
            } else {
                // 当前步数，是在最大范围内
                max = Math.max(max, curStep);
            }
        }
        return max >= nums.length - 1;
    }

}
